package visiopuce.service;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.FileDialog;
import org.hibernate.HibernateException;

import visiopuce.objets.Analyse;
import visiopuce.objets.Famille;
import visiopuce.objets.Personne;
import visiopuce.objets.PersonnePhenotype;
import visiopuce.objets.Phenotype;
import visiopuce.objets.Prelevement;
import visiopuce.objets.Puce;
import visiopuce.objets.Utilisateur;

public class PrescriptionServiceImpl implements PrescriptionService {

	/** Constructeur privé */
	private PrescriptionServiceImpl() {
	}

	/** Instance unique non préinitialisée */
	private static PrescriptionServiceImpl INSTANCE = null;

	/** Point d'acc�s pour l'instance unique du singleton */
	public static PrescriptionService getInstance() {
		if (INSTANCE == null) {
			INSTANCE = new PrescriptionServiceImpl();
		}
		return INSTANCE;
	}

	//
	// @Override
	// public String parseTxt(Date debut, Date fin) {
	// File rep = new File("D:/presc");
	// File[] files = rep.listFiles();
	// if (files != null) {
	// for (int i = 0; i < files.length; i++) {
	// SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
	// Date dateFichier = null;
	// try {
	// dateFichier = dateFichier = sdf.parse(files[i].getName().substring(0,
	// 8));
	// } catch (ParseException e) {
	// // TODO Auto-generated catch block
	// e.printStackTrace();
	// }
	// if (dateFichier != null && dateFichier.compareTo(debut) >= 0 ||
	// dateFichier.compareTo(fin) <= 0) {
	// parse(files[i]);
	// }
	// }
	// }
	// return "";
	// }

	public Personne parsePrescription() {
		FileDialog dlg = new FileDialog(Display.getCurrent().getActiveShell(), SWT.OPEN);
		dlg.setText("Télécharger");
		String path = dlg.open();
		Personne p = null;
		if (path != null) {

			InputStream ips;
			String out = "";
			try {
				ips = new FileInputStream(path);
				InputStreamReader ipsr = new InputStreamReader(ips, "utf8");
				BufferedReader br = new BufferedReader(ipsr);
				String ligne;

				boolean mere = false;
				boolean pere = false;
				boolean bilanGenet = false;
				boolean caryo = false;
				boolean fish = false;

				boolean prescPuce = false;
				boolean conservation = false;
				boolean puce = false;
				boolean confPuce = false;
				boolean immortalisation = false;

				boolean pheno = false;
				String raisonUrgence = "";
				String terme = null;
				boolean urgent = false;
				String sae = "";
				String sexe = "";
				String ipp = "";
				String nom = "";
				String prenom = "";

				String nomMere = "";
				String prenomMere = "";
				String nomPere = "";
				String prenomPere = "";
				Date dateNPere = null;
				Date dateNMere = null;

				String biomed = "";
				String medecinDem = "";
				String nda = "";
				Date dateN = null;
				Utilisateur medecin = null;
				int catbiomed = 0;
				boolean prenat = false;
				Date dateConsult = null;
				List<Phenotype> phenos = new ArrayList<Phenotype>();
				SimpleDateFormat formatterFR = new SimpleDateFormat("dd/MM/yyyy");
				String precisionPheno = "";
				String precisionBilan = "";
				String typeF = "NA";
				String commentaire = "";
				boolean debutPere = false;
				boolean debutMere = false;
				boolean finPrecisionBilan = true;
				boolean finRaisonUrgence = true;
				boolean finPrecisionPheno = true;
				boolean finParent = true;
				while ((ligne = br.readLine()) != null) {
					if (ligne.contains("PRESCRIPTION CYTOGENETIQUE")) {
						prescPuce = true;
						continue;
					}

					if (prescPuce) {
						if (ligne.trim().length() > 0) {
							if (ligne.contains("NOM : ") && !ligne.contains("Sexe :")) {
								nom = ligne.substring(ligne.indexOf("NOM : ") + "NOM : ".length(), ligne.indexOf("PRENOM : ")).trim();
								prenom = ligne.substring(ligne.indexOf("PRENOM : ") + "PRENOM : ".length()).trim();
								continue;
							}
							if (ligne.contains("IPP : ") && ligne.contains("Sexe : ")) {
								ipp = ligne.substring(ligne.indexOf("IPP : ") + "IPP : ".length(), ligne.indexOf("Sexe : ")).trim();
								sexe = ligne.substring(ligne.indexOf("Sexe : ") + "Sexe : ".length(), ligne.indexOf("Sexe : ") + "Sexe : ".length() + 1).trim();
								continue;
							}
							if (ligne.contains("Né(e) le : ") && ligne.contains("Date de consultation : ")) {
								dateN = formatterFR.parse(ligne.substring(ligne.indexOf("Né(e) le : ") + "Né(e) le : ".length(), ligne.indexOf("Date de consultation : ")).trim());
								String l = ligne.substring(ligne.indexOf("Date de consultation : ") + "Date de consultation : ".length()).trim();
								String ltmp = br.readLine().trim();
								if (ltmp.isEmpty()) {
									ltmp = br.readLine().trim();
								}
								if (ltmp.isEmpty()) {
									ltmp = br.readLine().trim();
								}
								if (!ltmp.isEmpty()) {
									dateConsult = formatterFR.parse(ltmp.substring(0, 10));
								}
								continue;
							}

							if (ligne.contains("NDA : ")) {
								nda = ligne.substring(ligne.indexOf("NDA : ") + "NDA : ".length()).trim();
								continue;
							}
							if (ligne.contains("Médecin demandeur : ")) {
								medecinDem = ligne.substring(ligne.indexOf("Médecin demandeur : ") + "Médecin demandeur : ".length()).trim();
								String[] tab = medecinDem.split(" ");
								String nomMedecin = null;
								if (tab.length == 1) {
									nomMedecin = tab[0].trim();
								}
								if (tab.length == 2) {
									nomMedecin = tab[1].trim();
								}
								if (tab.length == 3) {
									nomMedecin = tab[2].trim();
								}
								if (nomMedecin != null) {
									medecin = UtilisateurServiceImpl.getInstance().getUtilisateurByNom(nomMedecin.trim());
								}
								if (medecin == null) {
									medecin = UtilisateurServiceImpl.getInstance().getUtilisateurByNom(tab[1].trim());
								}
								continue;
							}

							if (ligne.contains("MERE :") || ligne.contains("PERE :")) {
								finParent = false;
								continue;
							}

							if (!finParent) {
								if (!ligne.contains("Dxc") && !ligne.contains("Page 2") && !ligne.contains("NOM : ") && !ligne.contains("Né(e) le :") && !ligne.contains("N° de séjour :")) {
									if (ligne.trim().length() > 0) {
										commentaire += "\n" + (ligne.trim());
										if (ligne.contains("PERE :")) {
											debutPere = true;
										}
										if (ligne.contains("MERE :")) {
											debutMere = true;
										}
										if (debutMere && !debutPere) {
											if (ligne.contains("Nom : ")) {
												nomMere = ligne.substring(ligne.indexOf("Nom : ") + "Nom : ".length()).trim();
											}
											if (ligne.contains("Prénom : ")) {
												prenomMere = ligne.substring(ligne.indexOf("Prénom : ") + "Prénom : ".length()).trim();
											}
											if (ligne.contains("Date de naissance :")) {
												dateNMere = formatterFR.parse(ligne.substring(ligne.indexOf("Date de naissance : ") + "Date de naissance : ".length()).trim());
											}
										}
										if (debutPere) {
											if (ligne.contains("Nom : ")) {
												nomPere = ligne.substring(ligne.indexOf("Nom : ") + "Nom : ".length()).trim();
											}
											if (ligne.contains("Prénom : ")) {
												prenomPere = ligne.substring(ligne.indexOf("Prénom : ") + "Prénom : ".length()).trim();
											}
											if (ligne.contains("Date de naissance :")) {
												dateNPere = formatterFR.parse(ligne.substring(ligne.indexOf("Date de naissance : ") + "Date de naissance : ".length()).trim());
											}
										}

									}
								}
							}

							if (ligne.contains("Prénatal :  Oui")) {
								prenat = true;
								finParent = true;
								continue;
							}

							if (ligne.contains("Bilan génétique à faire :")) {
								bilanGenet = true;
								finParent = true;
								continue;
							}
							if (ligne.contains("En prénatal : ") || ligne.contains("En prénatal AVEC IMG PREVUE : ") || ligne.contains("En postnatal : ") || ligne.contains("En foetopathologie : ")) {
								bilanGenet = true;
								puce = true;
							}
							if (bilanGenet) {
								if (ligne.contains("Caryotype standard")) {
									caryo = true;
									continue;
								}
								if (ligne.contains("FISH")) {
									fish = true;
									continue;
								}
								if (ligne.contains("Conservation de sang total")) {
									conservation = true;
									continue;
								}
								if (ligne.contains("ACPA (Analyse Chromosomique sur Puce à ADN)")) {
									puce = true;
									continue;
								}
								if (ligne.contains("Confirmation d'une anomalie vue par ACPA")) {
									confPuce = true;
									continue;
								}
								if (ligne.contains("Précisions bilan génétique :  ")) {
									continue;
								}
								if (ligne.contains("Immortalisation cellulaire")) {
									immortalisation = true;
									continue;
								}

								if (ligne.contains("Précisions bilan génétique :  ")) {
									precisionBilan += ligne.substring(ligne.indexOf("Raison de l'urgence : ") + "Raison de l'urgence : ".length()).trim();
									finPrecisionBilan = false;
									continue;
								}
								if (!finPrecisionBilan) {
									if (ligne.contains("Urgent :") || ligne.contains("Raison de l'urgence :") || ligne.contains("Prénatal :") || ligne.contains("Catégorie de l’agence de Biomédecine : ")) {
										finPrecisionBilan = true;
									} else {
										if (!ligne.contains("Dxc") && !ligne.contains("Page 2") && !ligne.contains("NOM : ") && !ligne.contains("Né(e) le :") && !ligne.contains("N° de séjour :")) {
											if (ligne.trim().length() > 0) {
												precisionBilan += "\n" + (ligne.trim());
											}
										}
									}
								}
								if (finPrecisionBilan) {

									if (ligne.contains("Urgent :  Oui")) {
										urgent = true;
										continue;
									}
									if (ligne.contains("Raison de l'urgence :")) {
										raisonUrgence += ligne.substring(ligne.indexOf("Raison de l'urgence : ") + "Raison de l'urgence : ".length()).trim();
										finRaisonUrgence = false;
										continue;
									}
									if (!finRaisonUrgence) {
										if (ligne.contains("Prénatal :") || ligne.contains("Catégorie de l’agence de Biomédecine : ")) {
											finRaisonUrgence = true;
										} else {
											if (!ligne.contains("Dxc") && !ligne.contains("Page 2") && !ligne.contains("NOM : ") && !ligne.contains("Né(e) le :") && !ligne.contains("N° de séjour :")) {
												if (ligne.trim().length() > 0) {
													raisonUrgence += "\n" + (ligne.trim());
												}
											}
										}
									}
									if (finRaisonUrgence) {
										if (ligne.contains("Terme au moment du prélèvement (en SA) : ")) {
											terme = ligne.substring(ligne.indexOf("Terme au moment du prélèvement (en SA) : ") + "Terme au moment du prélèvement (en SA) : ".length()).trim();
											prenat = true;
											continue;
										}
										if (ligne.contains("Signes d'appel échographiques : ")) {
											sae += ligne.substring(ligne.indexOf("Signes d'appel échographiques : ") + "Signes d'appel échographique : ".length()).trim();
											prenat = true;
											continue;
										}

										if (ligne.contains("En prénatal : ")) {
											catbiomed = 1;
											biomed = ligne.substring(ligne.indexOf("En prénatal : ") + "En prénatal : ".length()).trim();
											continue;
										}
										if (ligne.contains("En prénatal AVEC IMG PREVUE : ")) {
											catbiomed = 4;
											biomed = ligne.substring(ligne.indexOf("En prénatal AVEC IMG PREVUE : ") + "En prénatal AVEC IMG PREVUE : ".length()).trim();
											continue;
										}
										if (ligne.contains("En postnatal : ")) {
											catbiomed = 2;
											biomed = ligne.substring(ligne.indexOf("En postnatal : ") + "En postnatal : ".length()).trim();
											continue;
										}
										if (ligne.contains("En foetopathologie : ")) {
											catbiomed = 3;
											biomed = ligne.substring(ligne.indexOf("En foetopathologie : ") + "En foetopathologie : ".length()).trim();
											continue;
										}
										if (ligne.contains("Phénotype du cas index : ")) {
											pheno = true;
											continue;
										}
										if (pheno) {
											if (!ligne.contains(":")) {
												List<Phenotype> phenotypes = ReferentielServiceImpl.getInstance().getPhentype(ligne.trim());
												if (phenotypes.size() > 0) {
													phenos.add(phenotypes.get(0));
												}
												continue;
											} else if (ligne.contains("Précisions. :")) {
												precisionPheno += ligne.substring(ligne.indexOf("Précisions. : ") + "Précisions. : ".length()).trim();
												finPrecisionPheno = false;
												continue;
											}
											if (!finPrecisionPheno) {
												if (!ligne.contains("Dxc") && !ligne.contains("Page 2") && !ligne.contains("NOM : ") && !ligne.contains("Né(e) le :") && !ligne.contains("N° de séjour :")) {
													if (ligne.trim().length() > 0) {
														precisionPheno += "\n" + (ligne.trim());
													}
												}
											}
										}

									}
								}
							}

						}
					}
				}

				if (caryo || conservation || puce || confPuce || immortalisation) {
					if (ipp != null && !ipp.isEmpty()) {
						p = PersonneServiceImpl.getInstance().getPersonneByIpp(ipp);
					}
					if (p == null) {
						p = PersonneServiceImpl.getInstance().getPersonneByNomPrenomDateNaissance(nom, prenom, dateN);
					}
					if (p == null && nda != null && !nda.isEmpty()) {
						p = PrelevementServiceImpl.getInstance().getPersonneByIEP(nda);
					}
					if (p == null) {
						p = new Personne();
						p.setIdPersonne(0);
						p.setSexe("NA");
						p.setType("NA");
					}
					if (nom != null && !nom.isEmpty()) {
						p.setNom(nom);
					}
					if (prenom != null && !prenom.isEmpty()) {
						p.setPrenom(prenom);
					}
					if (ipp != null && !ipp.isEmpty()) {
						p.setiPP(ipp);
					}

					if (typeF != null && !typeF.isEmpty()) {
						p.setType(typeF);
					}
					if (commentaire != null && !commentaire.isEmpty()) {
						if (p.getCommentaires() == null || p.getCommentaires().isEmpty()) {
							p.setCommentaires(commentaire);
						} else {
							p.setCommentaires(p.getCommentaires() + "\n" + commentaire);
						}
					}
					if (precisionPheno != null && !precisionPheno.isEmpty()) {
						if (p.getPhenotype() == null || p.getPhenotype().isEmpty()) {
							p.setPhenotype(precisionPheno);
						} else {
							p.setPhenotype(p.getPhenotype() + "\n" + precisionPheno);
						}
					}
					if (dateN != null) {
						p.setDateNaissance(dateN);
					}
					if (sexe != null && !sexe.isEmpty()) {
						p.setSexe(sexe);
					}
					if (p.getIdPersonne() != 0) {
						ArrayList<Phenotype> phentoypes = PersonneServiceImpl.getInstance().getPhenotypesByIdPersonne(p.getIdPersonne());
						phenos.addAll(phentoypes);
					}
					ArrayList<PersonnePhenotype> personnePhenotypes = new ArrayList<PersonnePhenotype>();
					for (Phenotype phenotype : phenos) {
						PersonnePhenotype pf = new PersonnePhenotype();
						pf.setPersonne(p);
						pf.setPhenotype(phenotype);
						personnePhenotypes.add(pf);
					}
					p.setPersonnePhenotypes(personnePhenotypes);

					PersonneServiceImpl.getInstance().save(p);

					Personne perspere = null;
					Personne persmere = null;
					if (nomPere != null && prenomPere != null && dateNPere != null) {
						perspere = PersonneServiceImpl.getInstance().getPersonneByNomPrenomDateNaissance(nomPere, prenomPere, dateNPere);
					}
					if (nomMere != null && prenomMere != null && dateNMere != null) {
						persmere = PersonneServiceImpl.getInstance().getPersonneByNomPrenomDateNaissance(nomMere, prenomMere, dateNMere);
					}

					if (persmere != null || perspere != null) {
						Integer idFamille = FamilleServiceImpl.getInstance().getIdFamille(p.getIdPersonne());

						if (idFamille == null || idFamille.equals(0)) {
							idFamille = p.getIdPersonne();
						}
						Famille f = FamilleServiceImpl.getInstance().getIndividu(p.getIdPersonne());
						if (f == null) {
							f = new Famille();
							f.setIdFamille(idFamille);
							f.setPersonne(p);
							f.setMere(null);
							f.setPere(null);
							f.setSexe(0);
							f.setStatut(0);
						}
						if (persmere != null) {
							f.setMere(persmere);
						}
						if (perspere != null) {
							f.setPere(perspere);
						}
						if (p.getSexe() == "M") {
							f.setSexe(1);
						}
						if (p.getSexe() == "F") {
							f.setSexe(2);
						}
						FamilleServiceImpl.getInstance().save(f);
					}

					if (conservation) {
						Prelevement prel = new Prelevement();
						prel.setNumeroPrelevement("non reçu");
						prel.setSecteur(ReferentielServiceImpl.getInstance().getSecteurByNom("Banque"));
						prel.setTypePrelevement(ReferentielServiceImpl.getInstance().getTypePrelevementById(1));

						if (dateConsult != null) {
							prel.setDatePrelevement(dateConsult);
						}
						prel.setIdPrelevement(0);
						prel.setPersonne(p);
						if (nda != null && !nda.isEmpty()) {
							prel.setNumSejour(nda);
						}
						prel.setPrescripteur(medecin);
						prel.setIndication(ReferentielServiceImpl.getInstance().getTypeIndicationByLibelleAndCategorie("Conservation", 7));

						prel.setRecherche(false);
						prel.setDpi(false);

						PrelevementServiceImpl.getInstance().save(prel);
					}

					if (caryo) {
						Prelevement prel = new Prelevement();
						prel.setNumeroPrelevement("non reçu");
						if (prenat) {
							prel.setSecteur(ReferentielServiceImpl.getInstance().getSecteurByNom("Prénatal"));
							prel.setIndication(ReferentielServiceImpl.getInstance().getTypeIndicationByLibelleAndCategorie("non renseigné", 6));
						} else {
							prel.setSecteur(ReferentielServiceImpl.getInstance().getSecteurByNom("Postnatal"));
							prel.setIndication(ReferentielServiceImpl.getInstance().getTypeIndicationByLibelleAndCategorie("non renseigné", 5));
						}
						prel.setTypePrelevement(ReferentielServiceImpl.getInstance().getTypePrelevementById(10));
						if (dateConsult != null) {
							prel.setDatePrelevement(dateConsult);
						}
						if (nda != null && !nda.isEmpty()) {
							prel.setNumSejour(nda);
						}
						prel.setIdPrelevement(0);
						prel.setPersonne(p);
						prel.setPrescripteur(medecin);
						prel.setRecherche(false);
						prel.setDpi(false);

						PrelevementServiceImpl.getInstance().save(prel);

						Analyse analyse = new Analyse();
						analyse.setIdAnalyse(0);
						analyse.setPrelevement(prel);

						if (raisonUrgence != null && !raisonUrgence.isEmpty()) {
							analyse.setRaisonUrgent(raisonUrgence);
						}
						analyse.setUrgent(urgent);
						analyse.setTypeAnalyse(ReferentielServiceImpl.getInstance().getTypeAnalyseByid("1"));
						analyse.setUfExec(4076);
						AnalyseServiceImpl.getInstance().save(analyse);
					}

					if (immortalisation) {
						Prelevement prel = new Prelevement();
						prel.setNumeroPrelevement("non reçu");
						if (prenat) {
							prel.setSecteur(ReferentielServiceImpl.getInstance().getSecteurByNom("Prénatal"));
							prel.setIndication(ReferentielServiceImpl.getInstance().getTypeIndicationByLibelleAndCategorie("Autre prénatal", 6));
						} else {
							prel.setSecteur(ReferentielServiceImpl.getInstance().getSecteurByNom("Postnatal"));
							prel.setIndication(ReferentielServiceImpl.getInstance().getTypeIndicationByLibelleAndCategorie("Autre postnatal", 5));
						}
						prel.setTypePrelevement(ReferentielServiceImpl.getInstance().getTypePrelevementById(10));
						if (dateConsult != null) {
							prel.setDatePrelevement(dateConsult);
						}
						if (nda != null && !nda.isEmpty()) {
							prel.setNumSejour(nda);
						}
						prel.setInfoIndication("Pour immortalisation");
						prel.setIdPrelevement(0);
						prel.setPersonne(p);
						prel.setPrescripteur(medecin);
						prel.setRecherche(false);
						prel.setDpi(false);

						PrelevementServiceImpl.getInstance().save(prel);

						// Analyse analyse = new Analyse();
						// analyse.setIdAnalyse(0);
						// analyse.setPrelevement(prel);
						// analyse.setPrescripteur(medecin);
						// if (raisonUrgence != null &&
						// !raisonUrgence.isEmpty()) {
						// analyse.setRaisonUrgent(raisonUrgence);
						// }
						// analyse.setUrgent(urgent);
						// analyse.setTypeAnalyse(ReferentielServiceImpl.getInstance().getTypeAnalyseByid("9"));
						// analyse.setUfExec(4076);
						// AnalyseServiceImpl.getInstance().save(analyse);
					}

					if (confPuce) {
						Prelevement prel = new Prelevement();
						prel.setNumeroPrelevement("non reçu");
						prel.setTypePrelevement(ReferentielServiceImpl.getInstance().getTypePrelevementById(10));

						if (dateConsult != null) {
							prel.setDatePrelevement(dateConsult);
						}
						if (prenat) {
							prel.setSecteur(ReferentielServiceImpl.getInstance().getSecteurByNom("Puce prénatale"));
						} else {
							prel.setSecteur(ReferentielServiceImpl.getInstance().getSecteurByNom("Puce postnatale"));

						}
						if (nda != null && !nda.isEmpty()) {
							prel.setNumSejour(nda);
						}
						prel.setInfoIndication("Pour confirmation de puce");
						prel.setIdPrelevement(0);
						prel.setPersonne(p);
						prel.setPrescripteur(medecin);
						prel.setRecherche(false);
						prel.setDpi(false);

						PrelevementServiceImpl.getInstance().save(prel);

						// Analyse analyse = new Analyse();
						// analyse.setIdAnalyse(0);
						// analyse.setPrelevement(prel);
						// analyse.setPrescripteur(medecin);
						// if (raisonUrgence != null &&
						// !raisonUrgence.isEmpty()) {
						// analyse.setRaisonUrgent(raisonUrgence);
						// }
						// analyse.setUrgent(urgent);
						//
						// analyse.setTypeAnalyse(ReferentielServiceImpl.getInstance().getTypeAnalyseByid("9"));
						// analyse.setUfExec(4076);
						// AnalyseServiceImpl.getInstance().save(analyse);
					}

					if (puce) {
						Prelevement prel = new Prelevement();
						prel.setNumeroPrelevement("non reçu");
						if (biomed.equals("Déficience intellect./trouble apprentissages cadre syndromique")) {
							biomed = "Déficience intellectuelle ou trouble des apprentissages dans un cadre syndromique";
						}

						prel.setIndication(ReferentielServiceImpl.getInstance().getTypeIndicationByLibelleAndCategorie(biomed, catbiomed));
						if (prel.getIndication().getCategorie() == 3) {
							prel.setSecteur(ReferentielServiceImpl.getInstance().getSecteurByNom("Puce foetopathologie"));
						}
						if (prel.getIndication().getCategorie() == 1 || prel.getIndication().getCategorie() == 4) {
							prel.setSecteur(ReferentielServiceImpl.getInstance().getSecteurByNom("Puce prénatale"));
						}
						if (prel.getIndication().getCategorie() == 2) {
							prel.setSecteur(ReferentielServiceImpl.getInstance().getSecteurByNom("Puce postnatale"));
						}
						prel.setTypePrelevement(ReferentielServiceImpl.getInstance().getTypePrelevementById(10));
						if (dateConsult != null) {
							prel.setDatePrelevement(dateConsult);
						}
						prel.setIdPrelevement(0);
						prel.setPersonne(p);
						prel.setRecherche(false);
						prel.setDpi(false);
						prel.setPrescripteur(medecin);
						if (nda != null && !nda.isEmpty()) {
							prel.setNumSejour(nda);
						}

						PrelevementServiceImpl.getInstance().save(prel);

						Analyse analyse = new Analyse();
						analyse.setIdAnalyse(0);
						analyse.setPrelevement(prel);
						if (raisonUrgence != null && !raisonUrgence.isEmpty()) {
							analyse.setRaisonUrgent(raisonUrgence);
						}
						analyse.setUrgent(urgent);
						analyse.setTypeAnalyse(ReferentielServiceImpl.getInstance().getTypeAnalyseByid("3"));
						analyse.setUfExec(4274);

						AnalyseServiceImpl.getInstance().save(analyse);

						Puce newp = new Puce();
						newp.setAnalyse(analyse);
						newp.setIdPuce(0);
						newp.setSexePuce("I");
						newp.setSupprimer(false);

						PuceServiceImpl.getInstance().save(newp);
					}
					System.out.print("fin");
				}
			} catch (FileNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (ParseException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (HibernateException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		return p;

	}
	// @Override
	// public String parsePrescription() {
	// String resultats = "";
	// // On crée une instance de SAXBuilder
	// SAXBuilder sxb = new SAXBuilder();
	// try {
	// Document document = sxb.build(new
	// File(ApplicationContexte.FICHIER_PRESCRIPTION));
	// Element dossiers = document.getRootElement();
	// List<Element> listDossiers = dossiers.getChildren("dossier");
	// for (Element dossier : listDossiers) {
	// List<Prelevement> prelevements;
	// List<Analyse> analyses;
	// List<Puce> puces;
	// boolean aInserer = false;
	// boolean puceAfaire = false;
	// boolean caryoAfaire = false;
	// boolean fishAfaire = false;
	// boolean conservationAfaire = false;
	// // boolean prenatal = false;
	// // boolean foetopathologie = false;
	//
	// String autresPheno = null;
	// String nom = dossier.getChild("nom").getValue();
	// String prenom = dossier.getChild("prenom").getValue();
	// SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd/MM/yyyy");
	// Date dateNaissance = null;
	// if (!dossier.getChild("dateNaissance").getValue().isEmpty() &&
	// !dossier.getChild("dateNaissance").getValue().equals("//")) {
	// dateNaissance =
	// simpleDateFormat.parse(dossier.getChild("dateNaissance").getValue());
	// }
	// String sexe = dossier.getChild("sexe").getValue();
	// prelevements = new ArrayList<Prelevement>();
	// analyses = new ArrayList<Analyse>();
	// puces = new ArrayList<Puce>();
	//
	// Personne personne =
	// PersonneServiceImpl.getInstance().getPersonneByNomPrenomDateNaissance(nom,
	// prenom, dateNaissance);
	// if (personne == null) {
	// personne = new Personne();
	// personne.setIdPersonne(0);
	// personne.setNom(nom);
	// personne.setPrenom(prenom);
	// personne.setType("NA");
	// personne.setNumSejour("Non rentré");
	// personne.setDateNaissance(dateNaissance);
	// personne.setSexe(sexe);
	// String commentaire = "Dossier enregistré par prescription connectée le "
	// + simpleDateFormat.format(new Date()) + ". " + "Prescription ";
	//
	// if (dossier.getChild("typeBilan") != null &&
	// dossier.getChild("typeBilan").getValue() != null) {
	// commentaire += " effectuée lors de : " +
	// dossier.getChild("typeBilan").getValue();
	// }
	// if (dossier.getChild("motifBilan") != null &&
	// dossier.getChild("motifBilan").getValue() != null) {
	// commentaire += " pour " + dossier.getChild("motifBilan").getValue();
	// }
	// if (dossier.getChild("precisioMotif") != null &&
	// dossier.getChild("precisioMotif").getValue() != null) {
	// commentaire += " " + dossier.getChild("precisioMotif").getValue();
	// }
	// personne.setCommentaires(commentaire);
	// }
	//
	// if ((personne.getIdPersonne() == 0 || personne.getPhenotype() == null ||
	// personne.getPhenotype().isEmpty()) && dossier.getChild("puce") != null &&
	// dossier.getChild("puce").getChild("autresPheno") != null) {
	// personne.setPhenotype(dossier.getChild("puce").getChild("autresPheno").getValue());
	//
	// }
	//
	// ArrayList<Phenotype> phentoypes =
	// PersonneServiceImpl.getInstance().getPhenotypesByIdPersonne(personne.getIdPersonne());
	// if (phentoypes.size() == 0) {
	// List<Element> phenotypes = dossier.getChildren("phenotype");
	// ArrayList<PersonnePhenotype> personnePhenotypes = new
	// ArrayList<PersonnePhenotype>();
	// for (Element phenotype : phenotypes) {
	// if (phenotype.getChild("libelle") != null) {
	// if
	// (ReferentielServiceImpl.getInstance().getPhentype(phenotype.getChild("libelle").getValue())
	// != null &&
	// ReferentielServiceImpl.getInstance().getPhentype(phenotype.getChild("libelle").getValue()).size()
	// > 0) {
	// PersonnePhenotype pf = new PersonnePhenotype();
	// pf.setPersonne(personne);
	// pf.setPhenotype(ReferentielServiceImpl.getInstance().getPhentype(phenotype.getChild("libelle").getValue()).get(0));
	// personnePhenotypes.add(pf);
	// } else {
	// System.out.println("Phénotype non trouvé : " +
	// phenotype.getChild("libelle").getValue());
	// }
	// }
	// }
	// personne.setPhenotypes(personnePhenotypes);
	// }
	//
	// Biomedecine indication = null;
	//
	// List<Element> examens = dossier.getChildren("examen");
	// String precisionPuce = null;
	// String precisionFISH = null;
	// String precisionCaryo = null;
	// String precisionConservation = null;
	// Secteur secteurPuce =
	// ReferentielServiceImpl.getInstance().getSecteurByid("8");
	// Secteur secteurCaryo =
	// ReferentielServiceImpl.getInstance().getSecteurByid("2");
	// Secteur secteurFISH =
	// ReferentielServiceImpl.getInstance().getSecteurByid("2");
	//
	// for (Element examen : examens) {
	// String typeExamen = examen.getChild("titre").getValue();
	// if (typeExamen.contains("Puce")) {
	// puceAfaire = true;
	// if (dossier.getChild("puce") != null &&
	// dossier.getChild("puce").getChild("acpa") != null) {
	// indication =
	// ReferentielServiceImpl.getInstance().getTypeIndicationByLibelle(dossier.getChild("puce").getChild("acpa").getValue());
	// }
	// if (examen.getChild("precision") != null &&
	// examen.getChild("precision").getValue() != null) {
	// precisionPuce = examen.getChild("precision").getValue();
	// }
	//
	// if (typeExamen.contains("postnatale")) {
	// secteurPuce = ReferentielServiceImpl.getInstance().getSecteurByid("8");
	// } else if (typeExamen.contains("prénatale")) {
	// secteurPuce = ReferentielServiceImpl.getInstance().getSecteurByid("3");
	// } else if (typeExamen.contains("foetopathologie")) {
	// secteurPuce = ReferentielServiceImpl.getInstance().getSecteurByid("9");
	// }
	//
	// }
	// if (typeExamen.contains("Caryotype")) {
	// caryoAfaire = true;
	// if (examen.getChild("precision") != null &&
	// examen.getChild("precision").getValue() != null) {
	// precisionCaryo = examen.getChild("precision").getValue();
	// }
	// if (typeExamen.contains("postnatal")) {
	// secteurPuce = ReferentielServiceImpl.getInstance().getSecteurByid("2");
	// } else if (typeExamen.contains("prénatal")) {
	// secteurPuce = ReferentielServiceImpl.getInstance().getSecteurByid("1");
	// } else if (typeExamen.contains("foetopathologie")) {
	// secteurPuce = ReferentielServiceImpl.getInstance().getSecteurByid("4");
	// }
	// }
	// if (typeExamen.contains("FISH")) {
	// fishAfaire = true;
	// if (examen.getChild("precision") != null &&
	// examen.getChild("precision").getValue() != null) {
	// precisionFISH = examen.getChild("precision").getValue();
	// }
	// if (typeExamen.contains("postnatal")) {
	// secteurPuce = ReferentielServiceImpl.getInstance().getSecteurByid("2");
	// } else if (typeExamen.contains("prénatal")) {
	// secteurPuce = ReferentielServiceImpl.getInstance().getSecteurByid("1");
	// } else if (typeExamen.contains("foetopathologie")) {
	// secteurPuce = ReferentielServiceImpl.getInstance().getSecteurByid("4");
	// }
	// // Prelevement prelevement = new Prelevement();
	// // Analyse analyse = new Analyse();
	// // if (examen.getChild("precision") != null &&
	// // examen.getChild("precision").getValue() != null) {
	// // analyse.setRaisonUrgent(examen.getChild("precision").getValue());
	// // }
	// // analyse.setPrelevement(prelevement);
	// //
	// analyse.setTypeAnalyse(ReferentielServiceImpl.getInstance().getTypeAnalyse(8).get(0));
	// // prelevements.add(prelevement);
	// // analyses.add(analyse);
	//
	// }
	// if (typeExamen.contains("Conservation de sang total")) {
	// conservationAfaire = true;
	// precisionConservation = "Conservation de sang total. ";
	// if (examen.getChild("precision") != null &&
	// examen.getChild("precision").getValue() != null) {
	// precisionConservation += examen.getChild("precision").getValue();
	// }
	//
	// // Prelevement prelevement = new Prelevement();
	// //
	// prelevement.setSecteur(ReferentielServiceImpl.getInstance().getSecteurByid("5"));
	// //
	// // if (examen.getChild("precision") != null &&
	// // examen.getChild("precision").getValue() != null) {
	// // prelevement.setInfoIndication( +
	// // examen.getChild("precision").getValue());
	// // }
	// // prelevements.add(prelevement);
	// }
	// }
	//
	// if (puceAfaire || caryoAfaire || conservationAfaire || fishAfaire) {
	// if (personne.getIdPersonne() == 0) {
	// ArrayList<Personne> personnesMemeNom =
	// PersonneServiceImpl.getInstance().nomPrenomUnique(nom, prenom);
	// if (personnesMemeNom.size() > 0) {
	// String message =
	// "Une ou plusieurs personnes du même nom et prénom ont été trouvées dans la base avec une date de naissance différente : \n";
	// for (Personne personne2 : personnesMemeNom) {
	//
	// if (dateNaissance == null || (dateNaissance != null &&
	// !personne2.getDateNaissance().equals(personne.getDateNaissance()))) {
	// if (personne2.getDateNaissance() != null) {
	// message += "\t-" + personne2.getNom() + " " + personne2.getPrenom() +
	// " né(e) le " + simpleDateFormat.format(personne2.getDateNaissance()) +
	// "\r\n";
	// }
	// }
	// }
	// message +=
	// "Souhaitez-vous ajouter cette personne et ses analyses dans la base (en répondant non, les analyses ne seront pas non plus enregistrées) :"
	// + nom + " " + prenom;
	// if (dateNaissance != null) {
	// message += " né le " + simpleDateFormat.format(dateNaissance) + " ?";
	// } else {
	// message += " né le pas de date de naissance";
	// }
	// aInserer =
	// MessageDialog.openConfirm(Display.getCurrent().getActiveShell(),
	// "Personnes de même nom", message);
	// } else {
	// aInserer = true;
	// }
	// } else {
	// aInserer = true;
	// }
	// if (aInserer) {
	// // mise à jour ou enregistrement de la personne.
	// PersonneServiceImpl.getInstance().save(personne);
	//
	// String nomPrescripteur = dossier.getChild("medecin").getValue();
	// String nomPresc = "";
	// if (nomPrescripteur != null && !nomPrescripteur.isEmpty()) {
	// String[] press = nomPrescripteur.split(" ");
	// nomPresc = press[press.length - 1];
	// }
	// Utilisateur prescripteur =
	// UtilisateurServiceImpl.getInstance().getUtilisateurByNom(nomPresc);
	//
	// if (puceAfaire) {
	// Analyse analysePuce =
	// AnalyseServiceImpl.getInstance().getAnalyseByPersonneTypeAnalyse(personne.getIdPersonne(),
	// 3);
	// if (analysePuce == null) {
	//
	// Prelevement prelevement = new Prelevement();
	// prelevement.setIdPrelevement(0);
	// prelevement.setPersonne(personne);
	// prelevement.setSecteur(secteurPuce);
	// prelevement.setIndication(indication);
	// prelevement.setInfoIndication(precisionPuce);
	//
	// if (dossier.getChild("prenatal") != null) {
	// if (dossier.getChild("prenatal").getChild("sexeFoetus") != null) {
	// prelevement.addChamp(new Champ("" +
	// dossier.getChild("prenatal").getChild("sexeFoetus").getValue(),
	// "tSexeFoetus", "Prel-" + prelevement.getIdPrelevement()));
	// }
	// // if
	// // (dossier.getChild("prenatal").getChild("alphaSecond")
	// // != null) {
	// // prelevement.addChamp(new Champ("" +
	// // dossier.getChild("prenatal").getChild("alphaSecond").getValue(),
	// // "tAlphaSecond", "Prel-" +
	// // prelevement.getIdPrelevement()));
	// // }
	// // if
	// // (dossier.getChild("prenatal").getChild("betaPrem")
	// // != null) {
	// // prelevement.addChamp(new Champ("" +
	// // dossier.getChild("prenatal").getChild("betaPrem").getValue(),
	// // "tBetaPrem", "Prel-" +
	// // prelevement.getIdPrelevement()));
	// // }
	// // if
	// // (dossier.getChild("prenatal").getChild("betaSecond")
	// // != null) {
	// // prelevement.addChamp(new Champ("" +
	// // dossier.getChild("prenatal").getChild("betaSecond").getValue(),
	// // "tBetaSecond", "Prel-" +
	// // prelevement.getIdPrelevement()));
	// // }
	// // if
	// // (dossier.getChild("prenatal").getChild("mqSerique")
	// // != null) {
	// // prelevement.addChamp(new Champ("" +
	// // dossier.getChild("prenatal").getChild("mqSerique").getValue(),
	// // "tMqSerique", "Prel-" +
	// // prelevement.getIdPrelevement()));
	// // }
	// // if
	// // (dossier.getChild("prenatal").getChild("lCCPrem")
	// // != null) {
	// // prelevement.addChamp(new Champ("" +
	// // dossier.getChild("prenatal").getChild("lCCPrem").getValue(),
	// // "tLCCPrem", "Prel-" +
	// // prelevement.getIdPrelevement()));
	// // }
	// // if
	// // (dossier.getChild("prenatal").getChild("combine")
	// // != null) {
	// // prelevement.addChamp(new Champ("" +
	// // dossier.getChild("prenatal").getChild("combine").getValue(),
	// // "tCombine", "Prel-" +
	// // prelevement.getIdPrelevement()));
	// // }
	// // if
	// // (dossier.getChild("prenatal").getChild("nuquePrem")
	// // != null) {
	// // prelevement.addChamp(new Champ("" +
	// // dossier.getChild("prenatal").getChild("nuquePrem").getValue(),
	// // "tNuquePrem", "Prel-" +
	// // prelevement.getIdPrelevement()));
	// // }
	// // if
	// // (dossier.getChild("prenatal").getChild("pAPPAPrem")
	// // != null) {
	// // prelevement.addChamp(new Champ("" +
	// // dossier.getChild("prenatal").getChild("pAPPAPrem").getValue(),
	// // "tPAPPAPrem", "Prel-" +
	// // prelevement.getIdPrelevement()));
	// // }
	// // if
	// // (dossier.getChild("prenatal").getChild("sequentielIntegre")
	// // != null) {
	// // prelevement.addChamp(new Champ("" +
	// // dossier.getChild("prenatal").getChild("sequentielIntegre").getValue(),
	// // "tSequentielIntegre", "Prel-" +
	// // prelevement.getIdPrelevement()));
	// // }
	// // if
	// // (dossier.getChild("prenatal").getChild("signeAppel")
	// // != null) {
	// // prelevement.addChamp(new Champ("" +
	// // dossier.getChild("prenatal").getChild("signeAppel").getValue(),
	// // "tSigneAppel", "Prel-" +
	// // prelevement.getIdPrelevement()));
	// // }
	// if (dossier.getChild("prenatal").getChild("terme") != null) {
	// prelevement.addChamp(new Champ("" +
	// dossier.getChild("prenatal").getChild("terme").getValue(), "tTerme",
	// "Prel-" + prelevement.getIdPrelevement()));
	// }
	// if (dossier.getChild("prenatal").getChild("dateNaissance") != null &&
	// !dossier.getChild("prenatal").getChild("dateNaissance").getValue().isEmpty()
	// &&
	// !dossier.getChild("prenatal").getChild("dateNaissance").getValue().equals("//"))
	// {
	// DateFormat formatFr = new SimpleDateFormat("dd/MM/yyyy");
	// DateFormat formatUS = new SimpleDateFormat("yyyy-MM-dd");
	// Date champDDG =
	// formatFr.parse(dossier.getChild("prenatal").getChild("dateNaissance").getValue());
	// prelevement.addChamp(new Champ(formatUS.format(champDDG), "dateDG",
	// "Prel-" + prelevement.getIdPrelevement()));
	// }
	// }
	// PrelevementServiceImpl.getInstance().save(prelevement);
	//
	// analysePuce = new Analyse();
	// analysePuce.setIdAnalyse(0);
	// analysePuce.setTypeAnalyse(ReferentielServiceImpl.getInstance().getTypeAnalyseByid("3"));
	// analysePuce.setPrelevement(prelevement);
	// analysePuce.setPrescripteur(prescripteur);
	// analysePuce.setUfExec(4274);
	//
	// AnalyseServiceImpl.getInstance().save(analysePuce);
	//
	// Puce puce = new Puce();
	// puce.setAnalyse(analysePuce);
	// PuceServiceImpl.getInstance().save(puce);
	//
	// resultats += "\n\t-puce enregistrée pour " + personne.getNom() + " " +
	// personne.getPrenom();
	// }
	// }
	// if (caryoAfaire) {
	// Analyse analyseCaryo =
	// AnalyseServiceImpl.getInstance().getAnalyseByPersonneTypeAnalyse(personne.getIdPersonne(),
	// 1);
	// if (analyseCaryo == null) {
	// Prelevement prelevement = new Prelevement();
	// prelevement.setIdPrelevement(0);
	// prelevement.setPersonne(personne);
	// prelevement.setInfoIndication(precisionCaryo);
	// prelevement.setSecteur(secteurCaryo);
	// if (dossier.getChild("prenatal") != null) {
	// if (dossier.getChild("prenatal").getChild("sexeFoetus") != null) {
	// prelevement.addChamp(new Champ("" +
	// dossier.getChild("prenatal").getChild("sexeFoetus").getValue(),
	// "tSexeFoetus", "Prel-" + prelevement.getIdPrelevement()));
	// }
	// // if
	// // (dossier.getChild("prenatal").getChild("alphaSecond")
	// // != null) {
	// // prelevement.addChamp(new Champ("" +
	// // dossier.getChild("prenatal").getChild("alphaSecond").getValue(),
	// // "tAlphaSecond", "Prel-" +
	// // prelevement.getIdPrelevement()));
	// // }
	// // if
	// // (dossier.getChild("prenatal").getChild("betaPrem")
	// // != null) {
	// // prelevement.addChamp(new Champ("" +
	// // dossier.getChild("prenatal").getChild("betaPrem").getValue(),
	// // "tBetaPrem", "Prel-" +
	// // prelevement.getIdPrelevement()));
	// // }
	// // if
	// // (dossier.getChild("prenatal").getChild("betaSecond")
	// // != null) {
	// // prelevement.addChamp(new Champ("" +
	// // dossier.getChild("prenatal").getChild("betaSecond").getValue(),
	// // "tBetaSecond", "Prel-" +
	// // prelevement.getIdPrelevement()));
	// // }
	// // if
	// // (dossier.getChild("prenatal").getChild("mqSerique")
	// // != null) {
	// // prelevement.addChamp(new Champ("" +
	// // dossier.getChild("prenatal").getChild("mqSerique").getValue(),
	// // "tMqSerique", "Prel-" +
	// // prelevement.getIdPrelevement()));
	// // }
	// // if
	// // (dossier.getChild("prenatal").getChild("lCCPrem")
	// // != null) {
	// // prelevement.addChamp(new Champ("" +
	// // dossier.getChild("prenatal").getChild("lCCPrem").getValue(),
	// // "tLCCPrem", "Prel-" +
	// // prelevement.getIdPrelevement()));
	// // }
	// // if
	// // (dossier.getChild("prenatal").getChild("combine")
	// // != null) {
	// // prelevement.addChamp(new Champ("" +
	// // dossier.getChild("prenatal").getChild("combine").getValue(),
	// // "tCombine", "Prel-" +
	// // prelevement.getIdPrelevement()));
	// // }
	// // if
	// // (dossier.getChild("prenatal").getChild("nuquePrem")
	// // != null) {
	// // prelevement.addChamp(new Champ("" +
	// // dossier.getChild("prenatal").getChild("nuquePrem").getValue(),
	// // "tNuquePrem", "Prel-" +
	// // prelevement.getIdPrelevement()));
	// // }
	// // if
	// // (dossier.getChild("prenatal").getChild("pAPPAPrem")
	// // != null) {
	// // prelevement.addChamp(new Champ("" +
	// // dossier.getChild("prenatal").getChild("pAPPAPrem").getValue(),
	// // "tPAPPAPrem", "Prel-" +
	// // prelevement.getIdPrelevement()));
	// // }
	// // if
	// // (dossier.getChild("prenatal").getChild("sequentielIntegre")
	// // != null) {
	// // prelevement.addChamp(new Champ("" +
	// // dossier.getChild("prenatal").getChild("sequentielIntegre").getValue(),
	// // "tSequentielIntegre", "Prel-" +
	// // prelevement.getIdPrelevement()));
	// // }
	// if (dossier.getChild("prenatal").getChild("dateNaissance") != null &&
	// !dossier.getChild("prenatal").getChild("dateNaissance").getValue().isEmpty()
	// &&
	// !dossier.getChild("prenatal").getChild("dateNaissance").getValue().equals("//"))
	// {
	//
	// DateFormat formatFr = new SimpleDateFormat("dd/MM/yyyy");
	// DateFormat formatUS = new SimpleDateFormat("yyyy-MM-dd");
	// Date champDDG =
	// formatFr.parse(dossier.getChild("prenatal").getChild("dateNaissance").getValue());
	// prelevement.addChamp(new Champ(formatUS.format(champDDG), "dateDG",
	// "Prel-" + prelevement.getIdPrelevement()));
	// }
	// if (dossier.getChild("prenatal").getChild("signeAppel") != null) {
	// prelevement.addChamp(new Champ("" +
	// dossier.getChild("prenatal").getChild("signeAppel").getValue(),
	// "tSigneAppel", "Prel-" + prelevement.getIdPrelevement()));
	// }
	// if (dossier.getChild("prenatal").getChild("terme") != null) {
	// prelevement.addChamp(new Champ("" +
	// dossier.getChild("prenatal").getChild("terme").getValue(), "tTerme",
	// "Prel-" + prelevement.getIdPrelevement()));
	// }
	//
	// }
	// PrelevementServiceImpl.getInstance().save(prelevement);
	//
	// analyseCaryo = new Analyse();
	// analyseCaryo.setIdAnalyse(0);
	// analyseCaryo.setTypeAnalyse(ReferentielServiceImpl.getInstance().getTypeAnalyseByid("1"));
	// analyseCaryo.setPrelevement(prelevement);
	// analyseCaryo.setPrescripteur(prescripteur);
	// analyseCaryo.setUfExec(4076);
	//
	// AnalyseServiceImpl.getInstance().save(analyseCaryo);
	//
	// resultats += "\n\t-caryotype enregistrée pour " + personne.getNom() + " "
	// + personne.getPrenom();
	// }
	// }
	// if (conservationAfaire) {
	// Prelevement prelConservation =
	// PrelevementServiceImpl.getInstance().getPrelevementByPersonneSecteur(personne.getIdPersonne(),
	// 5);
	// if (prelConservation == null) {
	// Prelevement prelevement = new Prelevement();
	// prelevement.setIdPrelevement(0);
	// prelevement.setPersonne(personne);
	// prelevement.setInfoIndication(precisionConservation);
	// prelevement.setSecteur(ReferentielServiceImpl.getInstance().getSecteurByid("5"));
	// PrelevementServiceImpl.getInstance().save(prelevement);
	// resultats += "\n\t-conservation de sang enregistrée pour " +
	// personne.getNom() + " " + personne.getPrenom();
	// }
	// }
	// if (fishAfaire) {
	// Analyse analyseFish =
	// AnalyseServiceImpl.getInstance().getAnalyseByPersonneTypeAnalyse(personne.getIdPersonne(),
	// 8);
	// if (analyseFish == null) {
	// Prelevement prelevement = new Prelevement();
	// prelevement.setIdPrelevement(0);
	// prelevement.setPersonne(personne);
	// prelevement.setInfoIndication(precisionFISH);
	// prelevement.setSecteur(secteurFISH);
	//
	// if (dossier.getChild("prenatal") != null) {
	// if (dossier.getChild("prenatal").getChild("sexeFoetus") != null) {
	// prelevement.addChamp(new Champ("" +
	// dossier.getChild("prenatal").getChild("sexeFoetus").getValue(),
	// "tSexeFoetus", "Prel-" + prelevement.getIdPrelevement()));
	// }
	// if (dossier.getChild("prenatal").getChild("dateNaissance") != null &&
	// !dossier.getChild("prenatal").getChild("dateNaissance").getValue().isEmpty()
	// &&
	// !dossier.getChild("prenatal").getChild("dateNaissance").getValue().equals("//"))
	// {
	//
	// DateFormat formatFr = new SimpleDateFormat("dd/MM/yyyy");
	// DateFormat formatUS = new SimpleDateFormat("yyyy-MM-dd");
	// Date champDDG =
	// formatFr.parse(dossier.getChild("prenatal").getChild("dateNaissance").getValue());
	// prelevement.addChamp(new Champ(formatUS.format(champDDG), "dateDG",
	// "Prel-" + prelevement.getIdPrelevement()));
	// }
	// // if
	// // (dossier.getChild("prenatal").getChild("alphaSecond")
	// // != null) {
	// // prelevement.addChamp(new Champ("" +
	// // dossier.getChild("prenatal").getChild("alphaSecond").getValue(),
	// // "tAlphaSecond", "Prel-" +
	// // prelevement.getIdPrelevement()));
	// // }
	// // if
	// // (dossier.getChild("prenatal").getChild("betaPrem")
	// // != null) {
	// // prelevement.addChamp(new Champ("" +
	// // dossier.getChild("prenatal").getChild("betaPrem").getValue(),
	// // "tBetaPrem", "Prel-" +
	// // prelevement.getIdPrelevement()));
	// // }
	// // if
	// // (dossier.getChild("prenatal").getChild("betaSecond")
	// // != null) {
	// // prelevement.addChamp(new Champ("" +
	// // dossier.getChild("prenatal").getChild("betaSecond").getValue(),
	// // "tBetaSecond", "Prel-" +
	// // prelevement.getIdPrelevement()));
	// // }
	// // if
	// // (dossier.getChild("prenatal").getChild("mqSerique")
	// // != null) {
	// // prelevement.addChamp(new Champ("" +
	// // dossier.getChild("prenatal").getChild("mqSerique").getValue(),
	// // "tMqSerique", "Prel-" +
	// // prelevement.getIdPrelevement()));
	// // }
	// // if
	// // (dossier.getChild("prenatal").getChild("lCCPrem")
	// // != null) {
	// // prelevement.addChamp(new Champ("" +
	// // dossier.getChild("prenatal").getChild("lCCPrem").getValue(),
	// // "tLCCPrem", "Prel-" +
	// // prelevement.getIdPrelevement()));
	// // }
	// // if
	// // (dossier.getChild("prenatal").getChild("combine")
	// // != null) {
	// // prelevement.addChamp(new Champ("" +
	// // dossier.getChild("prenatal").getChild("combine").getValue(),
	// // "tCombine", "Prel-" +
	// // prelevement.getIdPrelevement()));
	// // }
	// // if
	// // (dossier.getChild("prenatal").getChild("nuquePrem")
	// // != null) {
	// // prelevement.addChamp(new Champ("" +
	// // dossier.getChild("prenatal").getChild("nuquePrem").getValue(),
	// // "tNuquePrem", "Prel-" +
	// // prelevement.getIdPrelevement()));
	// // }
	// // if
	// // (dossier.getChild("prenatal").getChild("pAPPAPrem")
	// // != null) {
	// // prelevement.addChamp(new Champ("" +
	// // dossier.getChild("prenatal").getChild("pAPPAPrem").getValue(),
	// // "tPAPPAPrem", "Prel-" +
	// // prelevement.getIdPrelevement()));
	// // }
	// // if
	// // (dossier.getChild("prenatal").getChild("sequentielIntegre")
	// // != null) {
	// // prelevement.addChamp(new Champ("" +
	// // dossier.getChild("prenatal").getChild("sequentielIntegre").getValue(),
	// // "tSequentielIntegre", "Prel-" +
	// // prelevement.getIdPrelevement()));
	// // }
	// if (dossier.getChild("prenatal").getChild("signeAppel") != null) {
	// prelevement.addChamp(new Champ("" +
	// dossier.getChild("prenatal").getChild("signeAppel").getValue(),
	// "tSigneAppel", "Prel-" + prelevement.getIdPrelevement()));
	// }
	// if (dossier.getChild("prenatal").getChild("terme") != null) {
	// prelevement.addChamp(new Champ("" +
	// dossier.getChild("prenatal").getChild("terme").getValue(), "tTerme",
	// "Prel-" + prelevement.getIdPrelevement()));
	// }
	// }
	// PrelevementServiceImpl.getInstance().save(prelevement);
	//
	// analyseFish = new Analyse();
	// analyseFish.setIdAnalyse(0);
	// analyseFish.setTypeAnalyse(ReferentielServiceImpl.getInstance().getTypeAnalyseByid("8"));
	// analyseFish.setPrelevement(prelevement);
	// analyseFish.setPrescripteur(prescripteur);
	// analyseFish.setUfExec(4076);
	//
	// AnalyseServiceImpl.getInstance().save(analyseFish);
	//
	// resultats += "\n\t-FISH enregistrée pour " + personne.getNom() + " " +
	// personne.getPrenom();
	// }
	// }
	// } else {
	// System.out.println("non inserer");
	// }
	// }
	// }
	//
	// } catch (Exception e) {
	// e.printStackTrace();
	// resultats = e.getMessage() + e.getCause();
	// }
	// return resultats;
	// }
}